1 00:00:00,680 --> 00:00:01,520 Welcome back. 2 00:00:01,520 --> 00:00:05,900 In this lecture we're going to be scripting the service that is going to handle placing batteries around 3 00:00:05,900 --> 00:00:09,290 the basement that players can collect to increase the charge of their flashlight. 4 00:00:09,290 --> 00:00:10,640 So let's go ahead and get started. 5 00:00:10,640 --> 00:00:14,450 I'm first going to show you the different positions that we're going to place them in the basement. 6 00:00:14,450 --> 00:00:16,040 Inside of our other stuff folder. 7 00:00:16,040 --> 00:00:18,740 We have a folder in here called Battery Positions. 8 00:00:18,740 --> 00:00:23,150 And these are just different points that we have inside of our basement that we're going to be spawning 9 00:00:23,150 --> 00:00:24,170 batteries at. 10 00:00:24,260 --> 00:00:25,790 So we'll put a model there. 11 00:00:25,790 --> 00:00:30,320 The players can click that model, and it'll allow them to collect a battery and increase the charge 12 00:00:30,320 --> 00:00:31,670 on their flashlight. 13 00:00:32,220 --> 00:00:36,720 So inside of service script service inside of the server folder, we're going to go ahead and open up 14 00:00:36,720 --> 00:00:38,340 our battery service. 15 00:00:38,760 --> 00:00:40,770 And inside of here we're going to need some services. 16 00:00:40,770 --> 00:00:42,570 One is replicated storage. 17 00:00:45,310 --> 00:00:47,740 Another service we'll need is server storage. 18 00:00:51,990 --> 00:00:54,780 We will need the sound service. 19 00:00:57,720 --> 00:01:01,230 And then we're also going to need a server script service. 20 00:01:06,720 --> 00:01:09,690 Next, we can go ahead and create the table that will represent the service. 21 00:01:09,690 --> 00:01:11,730 So we'll call it battery service. 22 00:01:12,820 --> 00:01:14,800 I'll make sure to return that at the end of our script. 23 00:01:14,800 --> 00:01:18,310 And we're also going to be using the service to act as a class. 24 00:01:18,310 --> 00:01:24,010 So when we spawn these different battery instances around the map, we're going to use a constructor 25 00:01:24,010 --> 00:01:30,580 that will create our battery object and we'll connect to that battery givers, click event and give 26 00:01:30,580 --> 00:01:33,550 that player, you know, batteries when they click it and stuff like that. 27 00:01:33,550 --> 00:01:40,570 So we'll have a battery service meta table in here and set the battery service meta table dot underscore 28 00:01:40,570 --> 00:01:43,060 underscore index meta method equal to itself. 29 00:01:44,390 --> 00:01:49,760 We'll have a reference to the game comms event and replicated storage, dot events, dot remotes, dot 30 00:01:49,760 --> 00:01:51,140 game communication. 31 00:01:51,140 --> 00:01:53,870 And then we'll also get the game comms enum. 32 00:01:53,870 --> 00:01:58,880 So we'll require for replicated storage, dot modules, dot enums, game communication. 33 00:01:59,000 --> 00:02:03,800 We're also going to get our anti-cheat module script inside of server script service. 34 00:02:04,500 --> 00:02:07,560 That server modules anti-cheat. 35 00:02:09,220 --> 00:02:13,510 And now we're going to make a reference to this battery giver, which is inside of server storage. 36 00:02:13,510 --> 00:02:15,640 So we can call it example battery. 37 00:02:16,030 --> 00:02:17,470 And it's inside of server stores. 38 00:02:17,620 --> 00:02:18,310 Other stuff. 39 00:02:18,310 --> 00:02:19,330 Dot battery. 40 00:02:19,920 --> 00:02:21,780 So the plan is. 41 00:02:22,360 --> 00:02:27,190 We're going to take this battery and I'll drag it here into the workspace so we can take a look at it. 42 00:02:27,190 --> 00:02:31,810 And this battery is going to be randomly placed at these different positions along our map. 43 00:02:31,810 --> 00:02:33,370 It has a slight glow to it. 44 00:02:33,370 --> 00:02:35,230 So players are able to see it in the dark. 45 00:02:35,230 --> 00:02:37,030 If they run out of flashlight batteries. 46 00:02:37,030 --> 00:02:40,540 And they'll click this part to go ahead and collect the battery. 47 00:02:40,540 --> 00:02:42,520 And then we'll make this disappear. 48 00:02:43,000 --> 00:02:46,330 And then after like let's say 50s, we can make it respawn again. 49 00:02:46,330 --> 00:02:50,080 So that way there isn't a finite number of batteries in the basement. 50 00:02:51,020 --> 00:02:52,310 This is a very simple model. 51 00:02:52,310 --> 00:02:57,200 All it has is the battery with a point light inside of it, and then it also has the quick part that 52 00:02:57,200 --> 00:03:01,310 we're going to use the click detector inside of to listen for when this gets clicked. 53 00:03:01,310 --> 00:03:04,100 So we can go ahead and move this back into the other stuff folder. 54 00:03:05,330 --> 00:03:08,960 And we're also going to get all of the different battery positions inside of the basement. 55 00:03:08,960 --> 00:03:10,880 So server storage, the other stuff. 56 00:03:11,090 --> 00:03:12,200 Battery positions. 57 00:03:12,200 --> 00:03:14,180 We're going to get all of the children. 58 00:03:14,660 --> 00:03:19,190 And then we're also going to refer to a sound in the sound service called the collect sound. 59 00:03:19,190 --> 00:03:21,770 And we'll play this to a player when they collect a battery. 60 00:03:21,770 --> 00:03:25,160 So inside of SFX there's a sound called battery collected. 61 00:03:25,160 --> 00:03:29,720 So when they collect a battery we're going to play this sound right here. 62 00:03:30,800 --> 00:03:31,520 Perfect. 63 00:03:32,220 --> 00:03:36,390 And then we can go ahead and create the table to act as cache for storing all of the current battery 64 00:03:36,390 --> 00:03:36,780 objects. 65 00:03:36,780 --> 00:03:40,680 So current batteries is equal to a table. 66 00:03:40,830 --> 00:03:43,230 We're going to need a random data type. 67 00:03:43,790 --> 00:03:46,220 And then we're going to need some constants. 68 00:03:47,000 --> 00:03:52,010 So we'll need a constant to define the respawn cooldown, and we'll set that to like 50s. 69 00:03:52,640 --> 00:03:57,680 We're going to have a constant to represent how much charge we should give to a player when they click 70 00:03:57,680 --> 00:04:02,300 one of those batteries, so we can call it battery value, and we could do something like 20. 71 00:04:02,330 --> 00:04:07,430 So if the flashlight's at like 40%, we'll add an extra 20 to make it 60%. 72 00:04:07,550 --> 00:04:12,440 And then we're also going to define the click distance or how close the player needs to be in order 73 00:04:12,440 --> 00:04:13,580 to click the giver. 74 00:04:13,580 --> 00:04:15,290 And we'll make that ten studs. 75 00:04:16,470 --> 00:04:18,330 Now we're going to need some private functions. 76 00:04:18,330 --> 00:04:23,010 One function is going to be responsible for changing the battery givers visibility. 77 00:04:23,010 --> 00:04:25,620 So when it gets clicked we want to make it not visible. 78 00:04:25,620 --> 00:04:28,350 And then when it regenerates we want to make it visible again. 79 00:04:28,350 --> 00:04:34,320 So this will get passed a model and then a boolean to tell it whether or not we'd like to make it visible 80 00:04:34,320 --> 00:04:35,250 or invisible. 81 00:04:37,470 --> 00:04:43,170 We're going to need a function that we're going to listen for when our different battery givers get 82 00:04:43,170 --> 00:04:43,470 clicked. 83 00:04:43,470 --> 00:04:45,030 So we'll call it on clicked. 84 00:04:46,550 --> 00:04:51,560 We're going to need a function to actually spawn one of those battery givers on the map, and we'll 85 00:04:51,560 --> 00:04:56,810 get a part passed to this function, which will act as the position we need to set this giver at. 86 00:04:57,140 --> 00:05:03,440 And then we can finally have a function to actually go ahead and place all of our batteries on the map. 87 00:05:04,160 --> 00:05:06,050 From this point we can create our constructor. 88 00:05:06,050 --> 00:05:09,050 So batteries service dot new. 89 00:05:09,080 --> 00:05:12,230 We'll just get past the battery model or the giver. 90 00:05:12,940 --> 00:05:17,140 And then we're also going to need a start function for our battery service. 91 00:05:17,900 --> 00:05:22,490 And this is what we will use to place all of our batteries randomly on the map. 92 00:05:23,190 --> 00:05:29,130 So what this function is going to do is it's going to loop through every single part or position in 93 00:05:29,130 --> 00:05:30,990 our battery positions table. 94 00:05:32,150 --> 00:05:37,520 And we're going to spawn a battery at this position, and we'll have this function return back to us 95 00:05:37,520 --> 00:05:39,740 the model of that battery giver. 96 00:05:39,740 --> 00:05:41,810 So we'll get a model back from this. 97 00:05:41,810 --> 00:05:44,810 And then we can use our constructor battery service. 98 00:05:45,600 --> 00:05:48,360 Dot new and pass this model to that function. 99 00:05:48,780 --> 00:05:53,700 So inside of the spawn battery function we're going to create a clone of our example battery giver. 100 00:05:53,700 --> 00:05:55,440 So example battery clone. 101 00:05:55,680 --> 00:05:59,520 And again we're going to use the pivot two function to pivot this to a new position. 102 00:05:59,520 --> 00:06:01,950 And that position is going to be a C frame dot new. 103 00:06:01,980 --> 00:06:07,350 We'll get the part dot position and subtract this by a vector three dot new zero. 104 00:06:07,350 --> 00:06:13,200 On the x, we get the part size on the y axis divided by two, and then zero on the z axis. 105 00:06:13,320 --> 00:06:16,920 And then we're going to add another vector three dot new. 106 00:06:16,920 --> 00:06:20,340 And this is going to be zero on the x axis. 107 00:06:20,340 --> 00:06:25,350 And then we're going to get our clone and get the extent size for the y axis. 108 00:06:25,350 --> 00:06:28,860 And divide that by two and then pass zero for the z axis. 109 00:06:29,680 --> 00:06:36,100 And then finally we're going to add a C frame angles zero on the x axis. 110 00:06:36,100 --> 00:06:38,440 And then we're going to have a random rotation. 111 00:06:38,440 --> 00:06:42,760 So RNG next integer -360 to 360 degrees. 112 00:06:43,180 --> 00:06:47,440 And then we can go ahead and do zero on the z axis. 113 00:06:47,860 --> 00:06:52,120 Once we set the c frame to the correct position, we're going to take our clone and set the parent equal 114 00:06:52,120 --> 00:06:57,550 to the workspace dot krustikrab we can put in the basement and then inside of the batteries folder. 115 00:06:58,090 --> 00:07:02,020 And then we can go ahead and return this clone or the giver. 116 00:07:02,500 --> 00:07:04,030 Then we take this clone. 117 00:07:04,030 --> 00:07:06,580 We pass it to our new constructor. 118 00:07:06,580 --> 00:07:10,420 So what we're going to do in here is we're going to create a table called self. 119 00:07:11,810 --> 00:07:16,400 Will make a property to refer to the battery model, which is equal to the battery model passed to the 120 00:07:16,400 --> 00:07:17,120 function. 121 00:07:17,120 --> 00:07:21,110 And we'll also make a reference to the click detector which is in the battery model. 122 00:07:21,440 --> 00:07:22,760 Dot click part. 123 00:07:23,240 --> 00:07:24,740 Dot click detector. 124 00:07:26,230 --> 00:07:29,830 And then we can go ahead and listen to when our click detector is clicked. 125 00:07:30,420 --> 00:07:34,140 And we can connect a lambda function to this and get the player that clicked it. 126 00:07:34,140 --> 00:07:36,480 And then we can call our on clicked function. 127 00:07:36,480 --> 00:07:41,010 We can pass the object itself to it, and then we can also pass the player who clicked it. 128 00:07:41,340 --> 00:07:46,260 Then we can go ahead and set the meta table on our object with the battery service meta table. 129 00:07:46,860 --> 00:07:52,470 We're going to insert this into our current batteries table, past self and then return self at the 130 00:07:52,470 --> 00:07:53,610 end of our constructor. 131 00:07:54,120 --> 00:07:56,880 And now we can go ahead and fill out our onClick function. 132 00:07:56,910 --> 00:07:58,530 So we'll get self here. 133 00:07:58,530 --> 00:08:01,740 And then the player who clicked our battery giver. 134 00:08:02,410 --> 00:08:07,060 And when the player clicks it, we first want to check whether or not they actually have a flashlight 135 00:08:07,060 --> 00:08:07,630 on them. 136 00:08:07,630 --> 00:08:14,950 So we can get this flashlight from either the player's backpack, find first child and we can look for 137 00:08:14,950 --> 00:08:18,610 a flashlight, or if they have it equipped, we can check their character as well. 138 00:08:18,610 --> 00:08:23,170 So player dot character find first child flashlight. 139 00:08:23,470 --> 00:08:27,520 If they do not have a flashlight for some reason, then we're just going to return. 140 00:08:29,160 --> 00:08:33,690 Otherwise, we need to check whether or not the player cheated when trying to grab this battery. 141 00:08:33,690 --> 00:08:38,460 So let's say they tried to click it from across the map by using like a spoofing technique. 142 00:08:38,460 --> 00:08:43,410 Then again, we're going to check if this player cheated and get a message from our anti-cheat and check 143 00:08:43,410 --> 00:08:44,430 player distance to object. 144 00:08:44,430 --> 00:08:48,990 We're going to pass the player the self dot battery model dot click part. 145 00:08:50,550 --> 00:08:53,790 And then we can also pass the click distance right there. 146 00:08:54,600 --> 00:08:59,760 If this player cheated, then we're going to go ahead and kick this player and give them that message 147 00:08:59,760 --> 00:09:00,930 and then just return. 148 00:09:01,230 --> 00:09:08,280 Otherwise we can use our set, uh, battery visibility function and pass our model to this and allow 149 00:09:08,280 --> 00:09:14,880 it to change the visibility or make our model disappear, and then make the model visible again after 150 00:09:14,880 --> 00:09:16,080 a certain amount of time. 151 00:09:16,080 --> 00:09:18,660 So we could pass to this function like false. 152 00:09:19,870 --> 00:09:22,000 And this will change our battery model. 153 00:09:22,000 --> 00:09:23,860 It'll disable the light and make it transparent. 154 00:09:23,860 --> 00:09:25,360 So let's go ahead and fill that out here. 155 00:09:25,600 --> 00:09:28,780 All we're going to do in this function is we're going to refer to the model. 156 00:09:28,780 --> 00:09:31,900 And inside the model there is the battery part itself. 157 00:09:31,900 --> 00:09:37,150 And we can set the transparency of it equal to 0 or 1 depending on the boolean. 158 00:09:37,150 --> 00:09:39,220 So we could do bool and zero. 159 00:09:39,220 --> 00:09:42,220 So if boolean is true then the transparency gets set to zero. 160 00:09:42,220 --> 00:09:44,620 Otherwise the transparency gets set to one. 161 00:09:44,620 --> 00:09:49,750 Again for the model click part dot click detector. 162 00:09:50,470 --> 00:09:55,060 We're going to get the max activation distance and set this equal to. 163 00:09:55,180 --> 00:09:58,600 If the bool is true, then we're going to set it equal to the click distance. 164 00:09:58,600 --> 00:10:00,160 Otherwise we'll set it to zero. 165 00:10:00,160 --> 00:10:02,290 So that way the players can't click it anymore. 166 00:10:03,260 --> 00:10:09,350 And then for the model dot battery dot attachment inside of there is our point light. 167 00:10:09,350 --> 00:10:12,530 We're going to set the enabled equal to the boolean pass to the function. 168 00:10:12,530 --> 00:10:14,060 And that's all we're going to do for this. 169 00:10:14,750 --> 00:10:21,710 After we make the battery invisible, what we could do next is get the new battery value that we're 170 00:10:21,710 --> 00:10:23,570 going to set on the player's flashlight. 171 00:10:23,570 --> 00:10:28,370 So we're going to use the math dot minimum function because we don't want to go above the flashlights 172 00:10:28,370 --> 00:10:30,080 Max battery capacity. 173 00:10:30,080 --> 00:10:34,250 So what we could pass here is we're going to get the flashlight get attribute. 174 00:10:35,610 --> 00:10:37,200 Current battery. 175 00:10:37,800 --> 00:10:39,570 And we're going to add. 176 00:10:40,340 --> 00:10:42,290 Our battery value. 177 00:10:42,820 --> 00:10:47,140 Now, if this number goes above 100, that's okay, because the other number we're going to pass here 178 00:10:47,140 --> 00:10:51,670 is the flashlight get attribute max battery. 179 00:10:51,850 --> 00:10:55,030 So just in case let's say there are batteries at 90. 180 00:10:55,030 --> 00:10:57,370 And then they click a battery and get plus 20. 181 00:10:57,370 --> 00:10:58,900 That means this will be 110. 182 00:10:58,900 --> 00:11:01,240 And we don't want to go above the max battery. 183 00:11:01,240 --> 00:11:06,100 So the math dot minimum will pick the smallest number, which in this case would be the max battery 184 00:11:06,100 --> 00:11:06,850 attribute. 185 00:11:07,430 --> 00:11:12,170 Afterwards, we can refer to the flashlight again and set the attribute on it. 186 00:11:12,870 --> 00:11:18,840 Of current battery equal to this new battery value. 187 00:11:18,870 --> 00:11:24,000 Then we can use the game comms event and fire it to this particular player to play a sound. 188 00:11:24,000 --> 00:11:27,870 So game comms enum dot two client dot play sound. 189 00:11:28,710 --> 00:11:34,920 And the sound is going to be equal to our collection sound, and then we can set play at point equal 190 00:11:34,920 --> 00:11:35,820 to false. 191 00:11:37,230 --> 00:11:41,130 From this point, we're going to use task dot delay to delay a function. 192 00:11:41,130 --> 00:11:43,140 We're going to pass the respawn cooldown. 193 00:11:43,140 --> 00:11:47,250 And the function we want to delay is our set battery visibility function. 194 00:11:47,250 --> 00:11:51,330 And then to this function we have to pass the self dot battery model again. 195 00:11:52,110 --> 00:11:54,030 And then we also need to pass a boolean. 196 00:11:54,030 --> 00:11:55,530 In this case that's going to be true. 197 00:11:55,530 --> 00:12:01,410 So after 50s we're going to make our battery model visible again and make it clickable again. 198 00:12:01,410 --> 00:12:04,950 That way another player can come along and collect the battery off of it. 199 00:12:05,760 --> 00:12:11,280 Now there is one small security vulnerability, and that is, even if we set the click distance to zero, 200 00:12:11,280 --> 00:12:17,310 an exploiter could still spoof this click detector and fire it close by to it and collect the battery, 201 00:12:17,310 --> 00:12:20,070 even though it's invisible or not ready to be used. 202 00:12:20,100 --> 00:12:26,940 So a way we could stop that is, we could go back into our constructor and have a another property we 203 00:12:26,940 --> 00:12:31,980 could call it something like is enabled, and we'll set that to true by default. 204 00:12:32,070 --> 00:12:39,390 And then inside of the set battery function we can change inside of our object the is enabled property. 205 00:12:39,390 --> 00:12:43,770 So that means instead to this function we should pass the object itself. 206 00:12:43,770 --> 00:12:45,570 And we could also pass the model. 207 00:12:45,570 --> 00:12:46,140 Why not. 208 00:12:46,140 --> 00:12:49,380 So we'll do set battery visibility. 209 00:12:49,380 --> 00:12:50,490 We'll pass self. 210 00:12:50,490 --> 00:12:51,480 We'll pass the model. 211 00:12:51,480 --> 00:12:53,970 And we'll make sure to do that down here as well. 212 00:12:53,970 --> 00:12:56,010 And then we can get self inside of this function. 213 00:12:56,010 --> 00:12:59,730 And set self dot is enabled equal to the boolean. 214 00:13:00,370 --> 00:13:07,510 And then inside of our onClick function, what we could do is we could check if self dot is enabled 215 00:13:07,510 --> 00:13:08,710 is not true. 216 00:13:08,710 --> 00:13:14,740 So if not self dot is enabled, then we're just going to return because the battery is currently in 217 00:13:14,740 --> 00:13:16,030 its cool down mode. 218 00:13:16,510 --> 00:13:17,110 Perfect. 219 00:13:17,110 --> 00:13:19,690 And I think that's all we need to do for our battery service. 220 00:13:19,690 --> 00:13:21,520 So we can go ahead and test it out. 221 00:13:22,770 --> 00:13:25,290 And unfortunately it looks like we immediately did get an error. 222 00:13:25,290 --> 00:13:27,930 So inside of our service we got failed to start. 223 00:13:27,930 --> 00:13:31,470 Uh, module C frame expected got vector three. 224 00:13:31,470 --> 00:13:35,850 So let's go ahead and figure out what the problem is on line 69. 225 00:13:36,810 --> 00:13:42,780 And the problem is, is that we forgot to actually place this vector three inside of the c frame2 because 226 00:13:42,780 --> 00:13:46,140 as you can see, our C frame dot new function terminates right here. 227 00:13:46,140 --> 00:13:50,820 And then we're attempting to add a vector three which causes the value to return a vector three. 228 00:13:50,820 --> 00:13:52,740 So we need to copy this real quick. 229 00:13:52,980 --> 00:13:56,730 And then we actually need to set this inside of here. 230 00:13:56,730 --> 00:14:00,600 So we'll put an extra quotation and we'll put another one here. 231 00:14:00,720 --> 00:14:06,330 So after our vector three function right here we can then paste our other vector three and then indent 232 00:14:06,330 --> 00:14:06,870 that there. 233 00:14:06,870 --> 00:14:11,610 And then after we set the c frame we're applying the rotation to it afterwards. 234 00:14:11,610 --> 00:14:13,050 So now our problem should be fixed. 235 00:14:13,050 --> 00:14:14,580 Let's go ahead and test this out again. 236 00:14:15,720 --> 00:14:17,790 Okay, now we are inside of the basement. 237 00:14:17,790 --> 00:14:21,210 We have our flashlight, and let's go ahead and drain some battery. 238 00:14:21,210 --> 00:14:24,090 And let's go ahead and see if our battery spawned on the map. 239 00:14:24,090 --> 00:14:29,370 So let's go ahead and look around and see if we can find any batteries anywhere we walk around. 240 00:14:29,370 --> 00:14:31,380 Hopefully we can find one here soon. 241 00:14:32,280 --> 00:14:32,910 And perfect. 242 00:14:32,910 --> 00:14:35,070 Here's a battery right here laying on our shelf. 243 00:14:35,070 --> 00:14:38,370 As you can see, you can kind of see it glowing here in the darkness. 244 00:14:39,510 --> 00:14:43,710 And now that our battery is at 87, we should be able to click it. 245 00:14:45,360 --> 00:14:49,170 And unfortunately nothing is happening when we are clicking our battery. 246 00:14:49,170 --> 00:14:51,990 So let's go ahead and figure out why that is. 247 00:14:53,040 --> 00:14:53,640 Alrighty. 248 00:14:53,640 --> 00:14:58,140 And the reason why our on click function is actually not working is because of this condition. 249 00:14:58,140 --> 00:14:59,070 Check right here. 250 00:14:59,070 --> 00:15:06,060 We forgot to include a Not statement because we want to return when we do not have a flashlight, and 251 00:15:06,060 --> 00:15:08,100 not when we do have a flashlight. 252 00:15:08,100 --> 00:15:11,910 So hopefully that should have fixed our problem and we can go ahead and test out our story again. 253 00:15:12,480 --> 00:15:13,140 Okay. 254 00:15:13,140 --> 00:15:15,930 So let's go ahead and go look for our battery again. 255 00:15:15,930 --> 00:15:20,370 And as we go up to it let's go ahead and click it and see what happens. 256 00:15:21,000 --> 00:15:21,510 Perfect. 257 00:15:21,510 --> 00:15:25,980 And just like that we played the sound and we got more battery added to our flashlight. 258 00:15:25,980 --> 00:15:28,770 And as you can see, our battery is also no longer here. 259 00:15:28,770 --> 00:15:30,120 And we can't click anything here. 260 00:15:30,120 --> 00:15:32,940 We're going to have to wait for it to respond after 50s. 261 00:15:32,940 --> 00:15:35,970 But let's go ahead and find another battery somewhere around our map. 262 00:15:36,300 --> 00:15:39,870 Take a quick look around, see if we can find another battery. 263 00:15:40,890 --> 00:15:41,340 Here we go. 264 00:15:41,340 --> 00:15:42,180 Here's another battery. 265 00:15:42,180 --> 00:15:49,200 If we go ahead and click this one, we get our nice battery added to our flashlight and we can keep 266 00:15:49,200 --> 00:15:49,980 looking around. 267 00:15:49,980 --> 00:15:54,180 And actually let's go ahead and go back and see when this battery right here responds. 268 00:15:54,180 --> 00:15:55,500 So we'll wait a little bit. 269 00:15:57,670 --> 00:16:02,800 And just like that, our battery respawn and we could go ahead and grab it and get more charge added 270 00:16:02,800 --> 00:16:03,490 to our battery. 271 00:16:03,520 --> 00:16:04,540 Very nice. 272 00:16:05,470 --> 00:16:09,880 So that wraps up everything we needed to do for this lecture, and I'll go ahead and see you in the 273 00:16:09,880 --> 00:16:10,570 next one.